<?php
class PedidosController 
    extends Zend_Controller_Action 
{
	
	public function hacerAction()
	{
		
		$config = Zend_Registry::get('configuration') ;
		
		$idNegocio		= $this->_getParam('idNegocio');
		$idDireccion	= $this->_getParam('idDireccion');
		$tipo			= $this->_getParam('tipo');
		$fechaEntrega	= $this->_getParam('fechaEntrega');
		$nota			= $this->_getParam('nota');
		$payAmount		= $this->_getParam('payAmount');
		
		try{
			
			$creator= new Delivery_Model_PedidoCreator();
			
			$items		= $this->carrito->agruparPorNegocio();
			$productos	= $items[$idNegocio]['productos']; 						
			$promociones= $items[$idNegocio]['promociones']; 						
			
			$pedido = $creator->hacer(
				$tipo,			
				$idNegocio,
				$this->cliente->getId(),
				$idDireccion,
				$productos,
				$promociones,
				$nota,
				$payAmount,
				$fechaEntrega
			);

			$negocio = $pedido->getNegocio();
			
			$this->carrito->vaciar( $idNegocio );
			
			//Mail al negocio para notificar el pedido 	
			$mailer = new Delivery_Model_Mailer;	
			$mail = new My_Mail();
			
			$mail->setTo( $negocio->email );
			$mail->name = $this->cliente->nombre;
			$mail->lang = $this->lang;
            $mail->headerType = 'order';
			
			$mail->setSubject( $this->_helper->Translate('newOrders') );
			$mail->setScriptHtml("new-order-{$this->lang}.phtml", 'layout-html');			
			
			$mailer->queue( $mail, Delivery_Model_Mailer::PRIORITY_HIGH);
			// Sms para mi
			$mailer->queueSms( $config->sms->to, "{$negocio->nombre} tiene un nuevo pedido. Tel: {$negocio->telefono}. Cancelación: {$pedido->fechaCancelacion}");
			
			$now = Zend_Date::now();
			$fechaCancelacion = new Zend_Date( $pedido->fechaCancelacion );
			$now->addMinute( 15 );
			
			$waitForOrderConfirmation = $fechaCancelacion->isLater( $now ) ? false : true;
			
			
			$response = array(
				'message' =>$this->_helper->Translate('orderHasBeenCreated'), 
				'idPedido' => $pedido->idPedido,
				'success' => true,
				'waitForOrderConfirmation' => $waitForOrderConfirmation
			);
				
			$this->_clearRememberedOptions( $idNegocio );
			
			echo $this->getHelper('Json')->sendJson( $response, false);	
			exit;
			
		}catch( Delivery_Model_Exception $e){
			$this->getHelper('Log')->exception( $e );
			
			$message = sprintf($this->_helper->Translate( $e->getMessage()), Delivery_Model_PedidoCreator::$error );
			
			$response = array('message' => $message, 'success' => false);
			echo $this->getHelper('Json')->sendJson( $response, false);	
			exit;	
		}
		catch( Zend_Exception $e){
			$this->getHelper('Log')->exception( $e );
			$response = array('message' => $this->_helper->Translate("applicationError"), 'success' => false);
			echo $this->getHelper('Json')->sendJson( $response, false);	
			exit;	
		}
	}
	
    protected function _clearRememberedOptions( $idNegocio )
    {
        $session = Zend_Registry::get('session');
        
        $vars = array( 
        	'tipoPedido-%s', 'direccionEntrega-%s', 'diaEntrega-%s-delivery', 
        	'fechaEntrega-%s-delivery', 'diaEntrega-%s-pickup', 'fechaEntrega-%s-pickup', 
        	'payAmount-%s', 'nota-%s'
        );
        
        foreach ( $vars as $var){
        
            $var = sprintf($var, $idNegocio);
            
            if(isset($session->$var)){
                unset($session->$var);
            }
        }
    }
	
	
}

